load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "boost.multiprecision",
    hdrs = glob(
        [
            "include/**/*.hpp",
        ],
        exclude = [
            "include/boost/multiprecision/complex128.hpp",
            "include/boost/multiprecision/cpp_bin_float/io.hpp",
            "include/boost/multiprecision/cpp_bin_float/transcendental.hpp",
            "include/boost/multiprecision/cpp_int/*.hpp",
            "include/boost/multiprecision/detail/**/*.hpp",
            "include/boost/multiprecision/eigen.hpp",
            "include/boost/multiprecision/float128.hpp",
            "include/boost/multiprecision/fwd.hpp",
            "include/boost/multiprecision/gmp.hpp",
            "include/boost/multiprecision/mpc.hpp",
            "include/boost/multiprecision/mpfi.hpp",
            "include/boost/multiprecision/mpfr.hpp",
            "include/boost/multiprecision/tommath.hpp",
            "include/boost/multiprecision/traits/is_byte_container.hpp",
            "include/boost/multiprecision/traits/max_digits10.hpp",
        ],
    ),
    features = [
        "parse_headers",
    ],
    includes = ["include"],
    textual_hdrs = glob([
        "include/boost/multiprecision/complex128.hpp",
        "include/boost/multiprecision/cpp_bin_float/io.hpp",
        "include/boost/multiprecision/cpp_bin_float/transcendental.hpp",
        "include/boost/multiprecision/cpp_int/*.hpp",
        "include/boost/multiprecision/detail/**/*.hpp",
        "include/boost/multiprecision/eigen.hpp",
        "include/boost/multiprecision/float128.hpp",
        "include/boost/multiprecision/fwd.hpp",
        "include/boost/multiprecision/gmp.hpp",
        "include/boost/multiprecision/mpc.hpp",
        "include/boost/multiprecision/mpfi.hpp",
        "include/boost/multiprecision/mpfr.hpp",
        "include/boost/multiprecision/tommath.hpp",
        "include/boost/multiprecision/traits/is_byte_container.hpp",
        "include/boost/multiprecision/traits/max_digits10.hpp",
    ]),
    deps = [
        "@boost.assert",
        "@boost.config",
        "@boost.core",
        "@boost.integer",
        "@boost.lexical_cast",
        "@boost.math",
        "@boost.predef",
        "@boost.random",
        "@boost.throw_exception",
    ],
)
